﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//int main()
//{
//
//	int arr[5] = { 0 };
//	int(*p)[5] = &arr;//数组指针，指向数组的指针；
//	char arr1[6];
//	char(*pc)[6] = &arr1;
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p1 = arr;
//	int* p2 = &arr[0];
//	int(*p3)[10] = &arr;
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", (*p3)[i]);		
//	}
//
//	return 0;
//}
//void Print(int(*arr)[5], int r, int c)
//{
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			printf("%d ",*(*(arr+i)+j));
//		}
//		printf("\n");
//	}
//}
//
//int main()
//{
//	int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};
//	Print(arr, 3, 5);
//	return 0;
//}

// // 函数指针 // // 

//int Add(int x, int y)
//{
//	return x + y;
//}
//char* text(int* p, char ch)
//{
//
//	return NULL;
//
//}
//int main()//函数指针 
//{
//	int a = 0;
//	int b = 0;
//	//printf("%p\n", &Add);
//	int (*pf) (int,int) = &Add;//函数指针变量；
//
//	char*(*pt)(int*, char) = &text;
//
//	return 0;
//}

//int Add(int x,int y)
//{
//	return x + y; 
//}

//int main()
//{
//	int (*pf)(int, int) = Add;
//	int r = pf(10, 20);
//  //int r=Add(10,20);
//	printf("%d\n", pf(10,20));
//	return 0;
//}

//int main()
//{
//	// void(*)();//函数指针类型
//	
//	//(void(*)())0,将0
//
//    ( *( void (*)() )0 )();// //调用的是0这个地址处的函数；
//
//	return 0;
//}

//int main()
//{
//	void(*signal(int, void(*)(int)))(int);//signal是函数声明；
//	return 0;
//}

//typedef unsigned int uint;
//typedef int* pint;
////int main()
////{
////	int* p1;
////	uint un1;
////	un1 = 100;
////	printf("%d", un1);
////
////	return 0;
////}
//
//int main()
//{
//
//	int* p1, p2;//p1是指针类型，p2是整型；
//	pint p3, p4;
//	return 0;
//}


// // typedef
//


//typedef int(*parr_t)[6];// 数组指针重命名名字放在*后；
//int main()
//{
//	int arr[6] = { 0 };
//
//	int (*pa)[6] = &arr;
//
//	return 0;
//}

//int add(int x, int y)
//{
//	return x + y;
//}
//typedef int(*pf_t)(int, int);//函数指针 类型 重命名；
//int main()
//{
//	int (*pf)(int, int) = add;
//	pf_t pf2= add;
//	return 0;
//}

//typedef void(*pf_t)(int);
//
//pf_t signal(int, pf_t);


// // 函数指针数组；

//Add(int x, int y)
//{
//	return x + y;
//}
//
//Sub(int x, int y)
//{
//	return x - y;
//}
//
//int main()
//{
//	int (*pf1)(int, int) = Add;
//
//	int (*pf2)(int, int) = Sub;
//
//	int(*pf[4])(int, int) = { pf1,pf2,Add,Sub };// 函数名后面加[]就是数组；
//
//	return 0;
//}

// //转移表// //

//int add(int a, int b)
//{
//	return a + b;
//}
//int sub(int a, int b)
//{
//	return a - b;
//}
//int mul(int a, int b)
//{
//	return a * b;
//}
//int div(int a, int b)
//{
//	return a / b;
//}
//
//int main()
//{
//	int x, y;
//	int input = 1;
//	int ret = 0;
//	do
//	{
//		printf("*************************\n");
//		printf(" 1:add	2:sub \n");
//		printf(" 3:mul 4:div \n");
//		printf(" 0:exit\n");
//		printf("*************************\n");
//		printf("请选择：");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case 1:
//			printf("输⼊操作数：");
//			scanf("%d %d", &x, &y);
//			ret = add(x, y);
//			printf("ret = %d\n", ret);
//			break;
//		case 2:
//			printf("输⼊操作数：");
//			scanf("%d %d", &x, &y);
//			ret = sub(x, y);
//			printf("ret = %d\n", ret);
//			break;
//		case 3:
//			printf("输⼊操作数：");
//			scanf("%d %d", &x, &y);
//			ret = mul(x, y);
//			printf("ret = %d\n", ret);
//			break;
//		case 4:
//			printf("输⼊操作数：");
//			scanf("%d %d", &x, &y);
//			ret = div(x, y);
//			printf("ret = %d\n", ret);
//			break;
//		case 0:
//			printf("退出程序\n");
//			break;
//		default:
//			printf("选择错误\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}


//int add(int a, int b)
//{
//	return a + b;
//}
//int sub(int a, int b)
//{
//	return a - b;
//}
//int mul(int a, int b)
//{
//	return a * b;
//}
//int div(int a, int b)
//{
//	return a / b;
//}
//int main()
//{
//	int x, y;
//	int input = 1;
//	int ret = 0;
//	int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
//	do
//	{
//		printf("*************************\n");
//		printf(" 1:add 2:sub \n");
//		printf(" 3:mul 4:div \n");
//		printf(" 0:exit\n");
//		printf("*************************\n");
//		printf("请选择：");
//		scanf("%d", &input);
//		if ((input <= 4 && input >= 1))
//		{
//			printf("输入操作数：");
//			scanf("%d %d", &x, &y);
//			ret = (*p[input])(x, y);
//			printf("ret = %d\n", ret);
//		}
//		else if (input == 0)
//		{
//			printf("退出计算器\n");
//		}
//		else
//		{
//			printf("输入有误\n");
//		}
//
//	} while (input);
//	return 0;
//}





